﻿using ProyectoDeTesis.Controladores;
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Linq;

namespace ProyectoDeTesis.Vistas
{
    public partial class Simulacion : Form
    {
        private int pantalla_id = 25;
        private SimulacionController simulacionController = new SimulacionController();
        private ConfiguracionController configuracionController = new ConfiguracionController();
        private ResultadoAlgoritmoController resultadoAlgoritmoController = new ResultadoAlgoritmoController();
        public Simulacion()
        {
            InitializeComponent();
            rdtpFecha.Value = DateTime.Now.Date;
        }

        private void BtnConfiguracion_Click(object sender, EventArgs e)
        {
            ProyectoDeTesis.Vistas.Configuracion config = new ProyectoDeTesis.Vistas.Configuracion();
            config.ShowDialog(this);
        }

        private void BtnHistorial_Click(object sender, EventArgs e)
        {
            HistorialSimulacion historial = new HistorialSimulacion();
            historial.ShowDialog(this);
        }

        private void BtnIniciarSimulacion_Click(object sender, EventArgs e)
        {
            DateTime fecha = rdtpFecha.Value;

            ProyectoDeTesis.Configuracion configuracion = configuracionController.obtenerConfiguracion(fecha);

            if (configuracion != null)
            {

                List<ResultadoAlgoritmo> listaResultadoAlgoritmo = resultadoAlgoritmoController.asignarPuertaEmbarques(fecha, configuracion);

                simulacionController.guardarResultadosAlgoritmo(listaResultadoAlgoritmo, fecha);

                dgvResultados.DataSource = listaResultadoAlgoritmo;

                BindingSource bindignSource1 = new BindingSource();
                bindignSource1.DataSource = (from pp in listaResultadoAlgoritmo
                                             select new { pp.simulacion_id, pp.num_vuelo, pp.num_puerta, pp.inicio_abordaje, pp.fin_abordaje });

                dgvResultados.DataSource = bindignSource1;
                dgvResultados.Columns[0].HeaderText = "Número de simulación";
                dgvResultados.Columns[1].HeaderText = "Numero de vuelo";
                dgvResultados.Columns[2].HeaderText = "Número de puerta";
                dgvResultados.Columns[3].HeaderText = "Inicio de abordaje";
                dgvResultados.Columns[4].HeaderText = "Fin de abordaje";
                dgvResultados.Columns[0].Width = 100;
                dgvResultados.Columns[1].Width = 100;
                dgvResultados.Columns[2].Width = 80;
                dgvResultados.Columns[3].Width = 140;
                dgvResultados.Columns[4].Width = 200;
            }
            else
            {
                FormError form = new FormError("Debe ingresar la configuracion para la fecha " + fecha.ToShortDateString());
                form.ShowDialog(this);
            }

        }
    }
}
